package org.dromara.datacheck.mytest;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class DateMapProcessor {

    public static void main(String[] args) {
        // 示例数据
        List<String> datesForMonth = Arrays.asList("10月01日", "10月02日", "10月03日", "10月04日");
        Map<String, Integer> jstCountMap = new HashMap<>();
        jstCountMap.put("10月02日", 5);
        jstCountMap.put("10月04日", 10);

        // 遍历 datesForMonth，检查 jstCountMap 中是否存在对应的键，如果不存在则添加
        for (String date : datesForMonth) {
            if (!jstCountMap.containsKey(date)) {
                jstCountMap.put(date, 0); // 使用 0 代替空字符串
            }
        }

        // 对 jstCountMap 按键进行升序排序
        List<Map.Entry<String, Integer>> sortedEntries = new ArrayList<>(jstCountMap.entrySet());
        sortedEntries.sort((e1, e2) -> {
            try {
                SimpleDateFormat format = new SimpleDateFormat("MM月dd日");
                Date date1 = format.parse(e1.getKey());
                Date date2 = format.parse(e2.getKey());
                return date1.compareTo(date2); // 升序排序
            } catch (ParseException e) {
                throw new RuntimeException("Date parsing error", e);
            }
        });

        // 将排序后的条目放入新的有序 Map 中
        Map<String, Integer> sortedMap = new LinkedHashMap<>();
        for (Map.Entry<String, Integer> entry : sortedEntries) {
            sortedMap.put(entry.getKey(), entry.getValue());
        }

        // 打印结果
        sortedMap.forEach((key, value) -> System.out.println(key + ": " + value));
    }
}
